Certain versions of multi-color printers employ a print engine to which print data is supplied in a "race" mode. In such printers, the print engine operates at a constant speed and rasterized image data is made available at a rate which keeps up with the engine's operation. To accomplish such operation, prior art printers have caused a host processor to download an already rasterized bitmap of the page to be printed. Of course, this consumed large amounts of memory and, with the advent of color, became prohibitively expensive in terms of memory requirements.
Most color laser printers today receive an image of a page to be printed in the form of a page description language (such as PCL or PostScript) and construct a page description which is then fed to the print engine for rendering onto a media sheet. More precisely, a page description is built in two steps. During formatting, the page description language is converted into a series of commands, called display commands which describe what must be printed. Further, the display commands are sorted according to their vertical position on the page and are placed into "page strips". Each page strip is then listed on a "display list". Thereafter, each page strip is extracted from the display list and is converted into a rasterized pixel image at a fast enough pace to maintain a constant flow of rasterized data to the print engine (which is operating in the "race" mode).
To conserve memory, the laser printer is provided with a plurality of raster buffers, with each buffer having sufficient capacity to handle the rasterized form of a page strip. Each buffer is reused as it's rasterized data is fed to the print engine and is rendered onto the media sheet.
In monochrome printers, each page to be printed is configured in the form of a separate display list that are sequentially numbered and are then sequentially accessed for rendering into rasterized form. In such printers, page pipelining has been utilized wherein processing of the display list for a subsequent page is commenced, even before a preceding page has been totally printed. However, with color laser printers, multiple color planes make up each page. For example, a single page of print data will most often utilize four color planes, magenta (M), cyan (C), yellow (Y) and black (K). A single display list is utilized for each page and each object entry in the display list includes sub-entries which define how that object is to be rendered within each of the four color planes. Accordingly, the laser color printer sends the same display list, multiple times, through the image processing procedure, each time a single color raster image being created, with the object present therein rendered in accord with the command data associated therewith. Thus, the display list for each page strip is "run" (i.e., translated to raster data) and the resultant rasterized image sent to the print engine. The same operation is repeated for each subsequent color plane.
For efficient operation, pipelining of color planes is desirable, i.e., processing the data from a second color plane while the first color plane is being fed to the print engine. However, because the same display list incorporates data for plural color planes and is run for each color plane, processing problems occur that have not heretofore been encountered in monochrome laser printers.
An example will illustrate the problems that are encountered. Assume that the page is configured in the form of 40 page strips and that each color plane is of identical size. Assume further that three strip memory buffers are employed and that the following processing queues are utilized: an imaging queue (IQ) of page strips that need to be rasterized; an engine queue (EQ) for strips that have been rasterized and are ready to be passed to the print engine; and a work-ahead queue (WAQ) which contains page strips that have been rasterized, but for which the print engine is not yet ready. Further assume that as soon as only three page strips are left on the IQ that the next plane or page to be sent to the engine is determined and its page strips are listed at the end of the IQ (after the remaining three strips of the previous color plane/page).
For the case of a four color plane (CMYK) page, further assume the following conditions:
1. Page strips 1-37 have been removed from the IQ and sent to be rasterized for plane 1; PA1 2. Planes 1-34 have been returned from being rasterized; have passed through EQ and been sent to the print engine for rendering.
At this point, page strips 38-40 remain on the IQ and page strips 1-34 of plane 2 are added to the IQ. Now page strips 38-40 for plane 1 are sent to be rasterized, and strip 38 is passed through the EQ, sent to the engine and is returned. Next, page strip 1 for plane 2 is sent to be imaged (because: (i) the strip buffer for strip 38 is released and made available, (ii) strips 39 and 40 already have the remaining two strip buffers assigned and (iii) there are no further strips from plane 1 to be processed).
Therefore, since only three strip buffers are available, page strips 1-3 for plane 2 will have been imaged before the print engine acknowledges completion of the printing of plane 1. This results in page strips 1-3 for plane 2 being placed on the WAQ, after being rasterized. Once the print engine acknowledges completion of printing of plane 1, page strips 1-3 of plane 2 are removed from the WAQ and are placed on the EQ, to await transfer to the print engine. The processing of the remaining strips for plane 2 proceeds as aforedescribed.
While the above description assumes that the timings of when page strips return from being imaged; return from the print engine; and the print engine acknowledges completion of printing for a plane, are completely deterministic and repeatable, such timings are not. The complexity of objects that are contained within a page strip, changes the amount of time required to rasterize the page strip. Further, changes in rasterization time affect how soon a strip is sent to the print engine and therefore when the page strip is returned. Accordingly, such timings are non-deterministic.
However, some operations within a laser printer are extremely critical and timing dependent. Before a page strip is rasterized, the plane to be rasterized must be placed on the display list, and when a page strip returns from being imaged, a determination must be made whether to place it on the EQ or the WAQ. The variations in timing of event occurrence resulting from the differences in page strip complexity make control of the placement of page strips on the aforesaid queues highly complex.
Accordingly, it is an object of this invention to provide an improved method and means for controlling page strips as they are moved between queues during a page rendering operation.
It is another object of this invention to enable a page strip listed on a display list to be passed to a rasterizer in a manner which is asynchronous with the time a page strip, after rasterization, is placed on either an EQ or a WAQ, to await passage to a print engine.